package com.tl.ip_location_relation_v4.utils;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class FileInputUtilV2 {
	/**
	 * 
	 * @author Antg
	 * @date 2021年7月6日
	 * @param
	 * @retun
	 * @Description 按行读取文件保存在一个list中 V2版本,使用了字节数组流,一次性将文件读取,加快了文件的读取速度
	 */
	public static List<String> loadData(String filePath, String charSet) {
		try {
			// 创建文件输入流
			FileInputStream fis = new FileInputStream(filePath);
			// 使用字节数组流一次性将数据加载
			byte[] buf = new byte[40 * 1024 * 1024];
			int len = fis.read(buf);
			fis.close();
			ByteArrayInputStream bais = new ByteArrayInputStream(buf, 0, len);
			// 将字节数组流嫁接到转换流上(实现字符编码指定)
			InputStreamReader isr = new InputStreamReader(bais, charSet);
			// 将转换流嫁接到缓存流中
			BufferedReader br = new BufferedReader(isr);
			List<String> resultList = new ArrayList<String>();
			String buffer = "";
			while ((buffer = br.readLine()) != null) {
				resultList.add(buffer);
			}
			br.close();
			return resultList;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
}
